分享一些最近Python刷题的经验与思考
转化学习情绪
学习Python一直都是从乐趣、兴趣出发,所以最讨厌做的事莫过于枯燥的刷题了。可公司新规定,每位员工需要在年底前完成5000分的编程答题任务,瞬间就不开心了。还好我是一个脑洞大的人,决定化愤怒为动力,想想什么能让我转化现在的情绪。然后….
我发现每道题后面有个发帖讨论的栏位,在里面可以讨论解题思路,大家互相交流。就在一瞬间灵感来了,这不是个免费的广告栏目么。我把每道题的答案发到讨论帖里,然后在上面备注上我的公众号地址,岂不是能稳稳的收割一波关注度。我都忍不住为自己的机智点赞啊,开心的下班后都不舍得走,坐在工位刷题到8点!
谈谈刷题思路
万事开头难,所以今天想跟大家聊聊刷题的心得与方式…
题型选择
对于新上手刷题的朋友来说,很容易因为挫败感而放弃。所以,建议大家还是从简单的题目入手。当然简单题目也有难度与分类,我们可以通过分类与名字先攻克自己擅长的。如果实在觉得有些困难,也可以借鉴别人的解题思路与代码后,再完成练习。
刷题目的
刷题的目的是让我们提升编程思路,学习更多算法,而非为了刷题而刷题。所以无需太关注刷题的数目,而要将重点放在解题思路上。另外每道题做完后,如果还有余力可以想象是否还有其他解题方式,也可以看看其他人的代码。
举个栗子!
昨天在刷题的时候,有一道题给自己印象很深,不是因为困难,反而是一道简单题,但就是因为太简单反而让人觉得思维固化,在这里分享给大家!
题目
题目原文忘记了,在这里简单说明下:
系统输入两个数字M、N,M为1-9的数字,N为系数。
eg:
输入 2 5,则需计算 2 22 222 2222 22222 的总和,即 24690
输入 1 3,则需计算 1 11 111 的总和,即 123
常规解法
初看这道题,第一个想法就是简单的数字循环叠加求和,无非考虑下10进制的乘数而已。解题如下:
def func():
M, N = map(int, input().split())
sum_number = number = 0
for i in range(N):
number += M * 10 ** i
sum_number += number
print(sum_number)
if __name__ == '__main__':
func()
灵活解法
上面的解法比较笨,但针对这道题,其实还有更为灵活的方法…
由于M是1—9之间的数字,所以先入为主的将M定义为了数字,但其实如果将M认为是字符串。那么2 --> 222 可以理解为int('2'*3)
!这样思考后,题目是否变得更为简单了。解题如下:
def func():
M, N = input().split()
print(sum([int(M * i) for i in range(1, int(N) + 1)]))
if __name__ == '__main__':
func()
The End
OK,今天的内容就到这里,如果觉得内容对你有所帮助,欢迎点击文章右下角的“在看
”。
公众号回复拼音即可获取整体代码及打包好的exe工具。
当然如果你是Pythoner欢迎访问我的github下载:https://github.com/BreezePython
期待你关注我的公众号 清风Python
,如果觉得不错,希望能动动手指转发给你身边的朋友们。
希望每周一至五清晨的7点10分,都能让清风Python的知识文章叫醒大家!谢谢……
往期文章精选
目不识丁的我使用Python开发汉字注音小工具
解惑Python模块学习,该如何着手操作
Python为微信头像任意添加装饰!
如何把图片变得炫酷多彩,Python教你这样实现!
Android手机打造你的Python&Java开发工具!
来看看Python炫酷的颜色输出与进度条打印
Python开发英语单词自测工具,助你逆袭单词王!
使用Python开发小说下载器,不再为下载小说而发愁
使用Python编写打字训练小程序
Python开发GUI工具介绍,实战:将图片转化为素描画!
Python一秒搭建ftp服务器,帮助你在局域网共享文件
将Android手机打造成你的python开发者桌面
Flask开发VIP版 HttpServer
python让高清素材图片占满你的硬盘!